[XEN][POWERPC] Be a little smarter with unimplemented()
authorJimi Xenidis <jimix@watson.ibm.com>
Fri, 22 Sep 2006 15:51:56 +0000 (11:51 -0400)
committerJimi Xenidis <jimix@watson.ibm.com>
Fri, 22 Sep 2006 15:51:56 +0000 (11:51 -0400)
Signed-off-by: Jimi Xenidis <jimix@watson.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
--HG--
extra : transplant_source : %0E%83%BAb%A3%A5%C3%B2%2A%E9%9E%BBkk%7F%E6%04%DD%B4G

xen/arch/powerpc/smp.c
xen/arch/powerpc/time.c
xen/include/asm-powerpc/debugger.h

index ce3762960e452cf7b7e36ef29bd2a89f7238a63a..4667518a2b2717c993d01e743b463356af7b8fd7 100644 (file)
@@ -32,16 +32,21 @@ void __flush_tlb_mask(cpumask_t mask, unsigned long addr)
     unimplemented();
 }
 
-void smp_send_event_check_mask(cpumask_t cpu_mask)
+void smp_send_event_check_mask(cpumask_t mask)
 {
-    unimplemented();
+    cpu_clear(smp_processor_id(), mask);
+    if (!cpus_empty(mask))
+        unimplemented();
 }
 
-int smp_call_function(void (*func) (void *info), void *info, int unused,
+
+int smp_call_function(void (*func) (void *info), void *info, int retry,
         int wait)
 {
-    unimplemented();
-    return 0;
+    cpumask_t allbutself = cpu_online_map;
+    cpu_clear(smp_processor_id(), allbutself);
+
+    return on_selected_cpus(allbutself, func, info, retry, wait);
 }
 
 void smp_send_stop(void)
@@ -56,5 +61,6 @@ int on_selected_cpus(
     int retry,
     int wait)
 {
+    unimplemented();
     return 0;
 }
index 04eaff1595f51753c4fd8adc0d1c4bccf0e46e6c..3a26e2ace4a554bad1033db2d63580fc7c1c638f 100644 (file)
@@ -93,5 +93,4 @@ void do_settime(unsigned long secs, unsigned long usecs, u64 system_time_base)
 
 void update_vcpu_system_time(struct vcpu *v)
 {
-    unimplemented();
 }
index 9c9d94b02187da9fbd6263f9a1db23365048d956..4731e0fdf4d10614b31678b91b4e438a516f8c51 100644 (file)
@@ -41,6 +41,13 @@ static inline void debugger_trap_immediate(void)
     __builtin_trap();
 }
 
+static inline void unimplemented(void)
+{
+#ifdef VERBOSE
+    dump_execution_state();
+#endif
+}
+
 static inline void show_execution_state(struct cpu_user_regs *regs)
 {
     show_registers(regs);
@@ -49,7 +56,6 @@ static inline void show_execution_state(struct cpu_user_regs *regs)
 extern void __warn(char *file, int line);
 #define WARN() __warn(__FILE__, __LINE__)
 #define WARN_ON(_p) do { if (_p) WARN(); } while ( 0 )
-#define unimplemented() WARN()
 
 #define FORCE_CRASH() debugger_trap_immediate()